#pragma once

#include "ToolkitsPro.h"

#include <string>

namespace libconfig { class Setting; }
namespace DBX
{
    using namespace libconfig;
    class TKSPRODLLEXPORT DBXDataParser
    {
    public:
        Setting &create(const std::string &key);
        void setLabel(Setting &setting, const std::string &label);
        void setType(Setting &setting, int type);
        Setting &getValue(Setting &setting) const;

    protected:
        explicit DBXDataParser();
        virtual ~DBXDataParser();
        Setting &getRoot() const;

    private:
        DBXDataParser(const DBXDataParser &) = delete;
        DBXDataParser &operator=(const DBXDataParser &) = delete;

        class Private;
        Private &p;
    };
} // namespace DBX
